package zhh.tangbao.websocket.service;

import zhh.tangbao.websocket.client.WebSocketClient;
import zhh.tangbao.websocket.pojo.WebSocketMessageEntity;

import java.io.IOException;
import java.util.List;

/**
 * <p>
 *     websocket服务策略模板
 *     将不同的策略模式注册进spring
 *     然后在client中获取不同的策略执行业务
 * </p>
 * @author 粥灰灰
 * <p>2023/3/28</p>
 */

public interface WebSocketService {

    void addClient(String id, WebSocketClient client);

    void removeClient(String id);

    void sendMessageToOne(String sendUserId, String receiverId, WebSocketMessageEntity message) throws IOException;

    /**
     * 发送json串
     * @param sendUserId 发哦是那个这ID，若为系统发送则传入null
     * @param receiverIds 接收人ID列表
     * @param message 信息，其中包括标题（tittle）和内容（content）
     * @throws IOException
     */
    void sendMessageToMany(String sendUserId, List<String> receiverIds, WebSocketMessageEntity message) throws IOException;

    /**
     * 发送json串
     * @param sendUserId 发哦是那个这ID，若为系统发送则传入null
     * @param message 信息，其中包括标题（tittle）和内容（content）
     * @throws IOException
     */
    void sendMessageToAll(String sendUserId, WebSocketMessageEntity message);
}
